/*
  собственно, веб-страница



*/


#ifndef T_ADVWEBPAGE_H
#define T_ADVWEBPAGE_H

#include <QWebView>
#include <QWebPage>
#include <QWebFrame>
#include <QPointer>
#include <QMessageBox>
#include <QNetworkRequest>
#include <QDebug>

// http://www.prog.org.ru/topic_13447_0.html
// спасибо Vitto74 за прототип
// полагаю код в паблик домейне или под GPL

class t_advWebPage : public QWebPage
{
    Q_OBJECT
public:
    t_advWebPage(QObject* parent = 0) ;
    QWebView *webView;
    struct Navigation {
        QPointer<QWebFrame> frame;
        QNetworkRequest request;
        NavigationType type;
    };

    virtual bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest &request, NavigationType type);

    virtual QWebPage* createWindow(QWebPage::WebWindowType _type);

public slots:
    //при исполнении команд будет использоваться только mainFrame() !!!!
    void evaluate(QString command);//запрос на выполнение команды из страницы
    void reloadSection(QString sectionName);//запрос обновить часть страницы

signals:
    void urlClick(QWebFrame*, QUrl, QWebPage::NavigationType);//запрос на выполнение навигации.
        //Вместо URL может быть любая строка, в том числе и стро
    void evaluate(QWebFrame* frame, QString command);//запрос на выполнение команды из страницы
    void reloadSection(QWebFrame* frame, QString sectionName);//запрос обновить часть страницы

private slots:
    void populateJavaScriptWindowObject();

private:

    //Vitto74:Я не знаю зачем они там хранятся, но подозреваю, что для
    //предотвращения утечек памяти
    QList<Navigation> navigations;
    QList<QWebPage*> createdWindows;

};

#endif // T_ADVWEBPAGE_H


